﻿#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

//2023.11.05比特线上作业代码题

//求两个数二进制中不同位的个数
//编程实现：两个int（32位）整数m和n的二进制表达中，有多少个位(bit)不同？
//输入例子 :1999 2299
//输出例子 : 7
//描述
//输入两个整数，求两个整数二进制格式有多少个位不同
//输入描述：两个整数
//输出描述：二进制不同位的个数
//示例1
//输入：22 33
//输出：5
int main()
{
	int a = 0, b = 0;
	while (scanf("%d%d", &a, &b) == 2)
	{
		int c = a ^ b;
		int count = 0;
		for (int i = 32; i > 0; i--)
		{
			if (1 == (c & 1))
				count++;
			c >>= 1;
			if (0 == c)
				break;
		}
		printf("%d\n", count);
	}
	return 0;
}


////打印整数二进制的奇数位和偶数位
////获取一个整数二进制序列中所有的偶数位和奇数位，分别打印出二进制序列
//int main()
//{
//	int n = 0;
//	while (scanf("%d", &n) == 1)
//	{
//		int a = n;
//		int odd[16] = { 0 };
//		int even[16] = { 0 };
//		for (int i = 15; i >= 0; i--)
//		{
//			odd[i] = a & 1;
//			a >>= 2;
//		}
//		a = n >> 1;
//		for (int i = 15; i >= 0; i--)
//		{
//			even[i] = a & 1;
//			a >>= 2;
//		}
//		printf("奇数位>:");
//		for (int i = 0; i < 16; i++)
//			printf("%d", odd[i]);
//		printf("\n");
//		printf("偶数位>:");
//		for (int i = 0; i < 16; i++)
//			printf("%d", even[i]);
//		printf("\n");
//	}
//	return 0;
//}

////统计二进制中1的个数
////写一个函数返回参数二进制中 1 的个数。
////比如： 15    0000 1111    4 个 1
////描述
////输入一个整数 n ，输出该数32位二进制表示中1的个数。其中负数用补码表示。
////数据范围：−2^31<= n <= 2^31−1
////	即范围为 :
////	−2147483648 <= n <= 2147483647
////	示例1
////	输入：10
////	返回值：2
////	说明：
////	十进制中10的32位二进制表示为0000 0000 0000 0000 0000 0000 0000 1010，其中有两个1。
////	示例2
////	输入：- 1
////	返回值：32
////	说明：
////	负数使用补码表示 ， - 1的32位二进制表示为1111 1111 1111 1111 1111 1111 1111 1111，其中32个1
//int NumberOf1(int n) {
//    // write code here
//    int count = 0;
//    int i = 0;
//    for (n; n != 0; n >>= 1)
//    {
//        if (1 == (n & 1))
//            count++;
//        i++;
//        if (32 == i)
//            break;
//    }
//    return count;
//}
//int main()
//{
//    int n = 0;
//    while (scanf("%d", &n) == 1)
//        printf("%d\n", NumberOf1(n));
//    return 0;
//}



////交换两个变量（不创建临时变量）
////不允许创建临时变量，交换两个整数的内容
//
//int main()
//{
//	int a = 10;
//	int b = 13;
//	printf("交换前：a = %d, b = %d\n", a, b);
//	a ^= b;
//	b ^= a;
//	a ^= b;
//	printf("交换后：a = %d, b = %d\n", a, b);
//	return 0;
//}